/* The file is saved in UTF-8 codepage.
 * Check: «Stereotype», Section mark-§, Copyright-©, Alpha-α, Beta-β, Smile-☺
 */
package cz.pecinovsky.english.lootp._134_;


import cz.pecinovsky.english.lootp._000_.Run;

import cz.pecinovsky.english.lootp.utility.IO;


import cz.pecinovsky.english.lootp._134_.IRingFactory_140_.IRingFactory;
import cz.pecinovsky.english.lootp._134_.Ring_134_.Ring;


//import cz.pecinovsky.english.lootp._134_.TovárnaNaElka_140_.TovárnaNaElka;
////////////////////////////////////////////////////////////////////////////////
//%%+  +++++ End of ignored starting test - place for imports +++++

import cz.pecinovsky.english.lootp.utility.NamedColor;
import cz.pecinovsky.english.lootp.utility.Position;
//%X+ xxxxx Start of the ovejumped text with declaration of the envelope xxxxx
/*******************************************************************************
 *<pre>
 * Předchozí:   Není - toto_je_nově_definovaná_třída
 *              Ttt v projektu Ppp
 * Následující: Prozatím není
 *
 * Projekt  Ppp
 *   + Přidáno
 *   - Odebráno
 *   ~ Změněno
 *</pre>
 */
public class TovárnaNaElka_140_
{    private TovárnaNaElka_140_() {}   static
////////////////////////////////////////////////////////////////////////////////
//%X- ----- End of the ovejumped text with declaration of the envelope -----


/*******************************************************************************
 * Instance třídy {@code TovárnaNaElka} představují továrny, které jsou schopny
 * na požádání "vyrobit" okruh typu ELKO.
 *
 * @author Rudolf PECINOVSKÝ
 * @version 6.03.2017 — 2010-11-08
 */
public class TovárnaNaElka implements IRingFactory
{
//== CONSTANT CLASS ATTRIBUTES =================================================
//== VARIABLE CLASS ATTRIBUTES =================================================
//== STATIC CONSTRUCTOR (CLASS INITIALIZER, STATIC INICITALIZING BLOCK) ========
//== CONSTANT INSTANCE ATTRIBUTES ==============================================
//== VARIABLE INSTANCE ATTRIBUTES ==============================================

     /** Implicitní color vytvářených okruhů. */
     private NamedColor defaultColor = NamedColor.BLACK;



//== CLASS GETTERS AND SETTERS =================================================
//== OTHER NON-PRIVATE CLASS METHODS ===========================================

//##############################################################################
//== CONSTUCTORS AND FACTORY METHODS ===========================================

    /***************************************************************************
     *
     */
    public TovárnaNaElka()
    {
    }



//== ABSTRACT METHODS ==========================================================
//== INSTANCE GETTERS AND SETTERS ==============================================

    /***************************************************************************
     * Nastaví implicitní barvu vytvářených okruhů.
     *
     * @param color Nastavovaná implicitní color
     * @return Dříve nastavená implicitní color
     */
    @Override
    public NamedColor setDefaultColor(NamedColor color)
    {
        NamedColor stará     = defaultColor;
        defaultColor = color;
        return stará;
    }



//== OTHER NON-PRIVATE INSTANCE METHODS ========================================

    /***************************************************************************
     * Vytvoří okruh implicitní barvy se startovním polem na zadané pozici.
     *
     * @param startPosition Position startovního pole vytvářeného okruhu
     * @return Vytvořený okruh
     */
    @Override
    public Ring createRing(Position startPosition)
    {
        return createRing(startPosition, defaultColor);
    }


    /***************************************************************************
     * Vytvoří okruh zadané barvy se startovním polem na zadané pozici.
     *
     * @param startPosition Position startovního pole vytvářeného okruhu
     * @param color       NamedColor vytvářeného okruhu
     * @return Vytvořený okruh
     */
    @Override
    public Ring createRing(Position startPosition, NamedColor color)
    {
        return Ring.elko(startPosition, color);
    }



//== PRIVATE AND AUXILIARY CLASS METHODS =======================================
//== PRIVATE AND AUXILIARY INSTANCE METHODS ====================================
//== EMBEDDED TYPES AND INNER CLASSES ==========================================
//== TESTING CLASSES AND METHODS ===============================================
//
//    /***************************************************************************
//     * Test method.
//     */
//    public static void test()
//    {
//        TovárnaNaElka inst = new TovárnaNaElka();
//    }
//    /** @param args Parametry příkazového řádku - nepoužívané. */
//    public static void main(String[] args)  {  test();  }
}

//%%- ---- Start of the ovejumped text with closing of the envelope ----
////////////////////////////////////////////////////////////////////////////////
//== TESTING CLASSES AND METHODS ===============================================
//Není-li třída testovací, následující dvě metody se smažou
//%X+   Metoda připravená k vložení do testovacích tříd
     /** */
     public void testFixture() {}
//%X-


    /***************************************************************************
     * Třída, jejíž instance má na starosti úklid mezi jednotlivými testy,
     * který není možno zakomponovat do metody {@code tearDown()},
     * dokud nebudou studenti umět programovat.
     */
    private static class TearDown implements Run.ITD
    {
        /** {@inheritDoc} */
        @Override
        public void cleanUp()
        {
//            Canvas.clearCanvas();
//            SprávcePlátna.getInstance().odstraňVše();
        }
    }


    /***************************************************************************
     * Test method.
     */
    public static void test()
    {
//        Run.tests(Test.class,
//                new TearDown(),
//                "testFixture",
//                "");
        IO.inform("Až se pokocháš, stiskni OK");
        System.exit(0);
    }
    /** @param args Parametry příkazového řádku - nepoužívané. */
    public static void main(String[] args)  {  test();  }
}
